#!/usr/bin/env python
# -*- coding:utf-8 -*-

import nltk

# 处理RSS订阅
"""
import feedparser

llog = feedparser.parse("https://languagelog.ldc.upenn.edu/nll/?feed=atom")
print(llog['feed']['title'])
print(len(llog.entries))

post = llog.entries[2]
print(post.title)
content = post.content[0].value
print(content[:70])

# nltk.word_tokenize(nltk.clean_html(content))
# print(nltk.word_tokenize(nltk.clean_html(llog.entries[2].content[0].value)))
"""


# 使用nltk.data.find()来获取语料库项目的文件名.


# 从PDF, Word及其他二进制格式中提取文本
"""
ASCII码文本和HTML文本是人可读的格式. 文字常常以二进制格式出现.
"""

# 捕获用户输入
"""
s = input("Enter some text:")
print("You typed", len(nltk.word_tokenize(s)),"words.")
"""




# NLP的流程
"""
NLP处理流程:
    打开一个URL,读里面HTML格式的内容,去除标记,并选择字符的切片,然后分词,
    是否转换为nltk.Text对象是可选择的,我们也可以将所有词汇小写并提取词汇表.
    使用type(x),找出任一Python对象x的类型.
"""

# 但载入一个URL或文件内容时,正在处理字符串,Python的str类型.
docu = "F:\\PythonProject\\AI\\NLP\\自然语言处理笔记\\scripts\\document.txt"
raw = open(docu).read()
print(type(raw))

# 当将一个字符串分词,会产生一个链表,这是Python的list类型,规范化和排序链表产生其它链表
tokens = nltk.word_tokenize(raw)
print(type(tokens))
print('='*20)
words = [w.lower() for w in tokens]
print(type(words))
print('='*20)
vocab = sorted(set(words))
print(type(vocab))

# 一个对象的类型决定了它可以执行哪些操作.
# 我们可以连接字符串与字符串,列出链表内容,但我们不能连接字符串与链表
query = 'Who knows?'
beatles = ['john','paul','george','ringo']
print(query + beatles)
# 报错: TypeError: must be str, not list


